#include <cairo.h>

int
main(int argc, char *argv[]){
  // 首先创建一个surface对象
  cairo_surface_t *surface = cairo_image_surface_create(
    CAIRO_FORMAT_ARGB32, // 本参数为指定像素格式的常量，CAIRO_FORMAT_ARGB32指定了ARGB32的格式，即32bit，其中不透明度、红、绿、蓝各占1byte。
    1600,// 指定surface宽度为1600像素
    900);// 指定surface高度为900像素


  // 然后再用刚刚创建的surface对象创建一个cairo context对象
  cairo_t *cr = cairo_create(surface);
  // 作为参数创建cairo_t的surface对象“扮演”了“画布”的角色，是所有作画操作的“目标”，所以叫目标surface。


  // 以下操作并不是直接在目标surface上画线，而只是画路径。
  cairo_move_to(cr, 400, 300);// 将“画笔”的“下笔点”移动到坐标(100, 450)处
  cairo_line_to(cr, 1200, 300);// 从“下笔点”画一条到(1200, 300)处的水平线段
  cairo_line_to(cr, 1200, 600);// 再从(1200, 300)处接着画一条到(1200, 600)处的垂直线段
  cairo_close_path(cr);// 封闭路径，会自动画一条线段将当前子路径的起始点和结尾点连起来

  // 沿路径画线，这才是在surface上画线的操作
  cairo_stroke(cr);
  // 画线完毕后会消除此前所有路径数据

  // 将目标surface内容输出到out.png文件。
  cairo_surface_write_to_png(surface, "a.png");

  return 0;
}//func main